package cn.tedu.mall.book.service;

import cn.tedu.mall.book.pojo.dto.ProductAddNewDTO;
import cn.tedu.mall.book.pojo.dto.ProductUpdateDTO;
import cn.tedu.mall.book.pojo.vo.ProductSimpleVO;
import cn.tedu.mall.book.pojo.vo.ProductDetailVO;
import cn.tedu.mall.book.web.JsonPage;
import com.github.pagehelper.PageInfo;

import java.util.List;

/**
 * @author zxjun
 * @date 2022/6/10 19:53
 */
public interface IProductService {
    /**
     * 新增商品
     */
    void addNewProduct(ProductAddNewDTO productAddNewDTO);

    /**
     * 后台修改商品价格和库存
     * @param productUpdate
     */
    void updateById(ProductUpdateDTO productUpdate);

    /**
     * 后台根据id删除商品
     * @param id
     */
    void deleteById(Long id);

    /**
     * 后台分页查询
     */
    JsonPage<ProductSimpleVO> getList(Integer page, Integer pageSize);

    /**
     * 根据id查询商品详细信息
     * @param id
     * @return
     */
    ProductDetailVO getById(Long id);

    /**
     * 新书首发
     * @return
     */
    List<ProductSimpleVO> getBookForNewStart();

    /**
     * 精品推荐
     * @return
     */
    List<ProductSimpleVO> getBookForRecommend();

    /**
     * 根据分类id返回商品
     * @param categoryId
     * @return
     */
    List<ProductSimpleVO> getProductsByCategoryId(Integer categoryId);

    /**
     * 将根据分类查询到的商品按一定顺序返回
     * @param categoryId
     * @return
     */
    List<ProductSimpleVO> getProductsByCategoryChildrenIdOrderly(Integer categoryId,String index);

    /**
     * 根据关键词查询所有商品
     * @param keyWord
     * @return
     */
    List<ProductSimpleVO> getProductsBySearch(String keyWord);

    /**
     * 根据关键词查询所有商品并按一定顺序返回
     * @param keyWord
     * @return
     */
    List<ProductSimpleVO> getProductsBySearchOrderly(String keyWord,String index);

    /**
     * 新书榜
     * @return
     */
    List<ProductSimpleVO> getBookForNewBookTop();

    /**
     * 畅销榜
     * @return
     */
    List<ProductSimpleVO> getBookForBestSellerTop();


}